Выражение | expression

Тип функции expression (выражение) вычисляется на этапе разбора строки (парсинга) и не приводят к изменениям состояния игры. Выражения могут входить в состав других сложных выражений, фактов или действий. Выражение возвращает вычисленное значение. Если вся строка является одним выражением, то вычисленное значение будет финальным результатом всей строки.

Примеры выражений:

цвет стен
количество людей в комнате
некто, взявший 3 рубля

Пример функции выражения:

// атрибуты
expression(attribute Atr, object Ob)
{
  -- parsing --
  if :Ob.key != :Atr.key then fail, "несогласовано"
  Ok
  -- execute --
  if :Ob.:Atr then return :Ob
  fail, "тут такого нет"
}

Секции в выражениях

В выражениях допускаются секции: parsing (парсинг) execute (выполнение)

Секция parsing (парсинг)

Секция универсальна для всех типов функций. Смотрите описание в разделе Парсерные функции.

Секция execute (выполнение)

Секция execute (выполнение) в выражениях вычисляет значение выражения. В выражениях cекция execute (выполнение) исполняется на этапе парсинга, из чего следует: 1. Выполнение этой секции может происходить многократно; 2. Результат выражения может быть вариантным; 3. В этой секции нельзя менять состояния объектов и переменных (за исключением переменных самой функции); 4. Результат выражения влияет на дальнейший парсинг команды.

Пример:

выражение (среднее, число А, число Б)
{
  -- выполнение --
  (А + Б)/2
}

В данном примере функция вычисляет среднее значение двух чисел. Обращаться к функции из кода можно следующим образом.

Пример:

X = среднее 4 5

A = 2
Б = 7
Y = среднее А Б //переменные А и Б должны содержать числа

Смотрите также

System_GetState, System states, System state value class


to do:
Отформатировать.
Проверить корректность.
Нужны пояснения к примерам.
Дополнить.